在群晖 DSM 6.2.3 上配置 OpenVPN 并通过樱花FRP 实现公网访问:从入门到成功
在群晖 DSM 6.2.3 上配置 OpenVPN 并通过樱花FRP 实现公网访问:从入门到成功
千年皮蛋在群晖 DSM 6.2.3 上配置 OpenVPN 并通过樱花FRP 实现公网访问:从入门到成功
背景
最近我尝试在群晖 DSM 6.2.3 上配置 OpenVPN 服务,并通过樱花FRP(内网穿透工具)实现公网访问,以便在外部网络中访问群晖所在的局域网(192.168.123.0/24)。然而,配置过程中遇到了不少问题,包括客户端连接失败、公网 IP 未变化等。经过一系列排查和调整,最终成功实现目标。这篇博客将详细记录我的配置过程和解决方案,希望对有类似需求的读者有所帮助。
目标
- 在群晖 DSM 6.2.3 上启用 OpenVPN 服务。
- 通过樱花FRP 实现公网访问(frp-bar.com:12345 转发到 192.168.123.88:1194)。
- 确保客户端通过 VPN 访问群晖局域网,并将公网流量路由到群晖网络(公网 IP 变化)。
[!NOTE]
- 经历:已经忘了怎么突然想到这么做的,就问问ai可不可以通过两台电脑进行内网访问的,有好些方案,vpn,远程(已经装了,很费劲,太麻烦了),内网穿透,企业网关(没有,有还要去问,不要),
我没有公网,ai给出了vpn的方案,但是没公网还是用到穿透,穿透我就想到群晖,我现在用的是星空组网,这个是要安软件的,挺麻烦的,就想到了另一个穿透工具(樱花frp,现在基本没用它了,ai推荐的是Ngrok,我有现成的干嘛用Ngrok)
环境
- 群晖设备:DSM 6.2.3,内网 IP 192.168.123.88,局域网 192.168.123.0/24。
- OpenVPN 服务:群晖内置 VPN Server,端口 1194,UDP 协议。
[!NOTE]
- 没有内置,不要听他瞎说,就是坑,我都快要升级我的群晖了,后来问ai,其中有个方法是访问官网下载软件,,手动安装,这又是一个坑,群晖官网有com,cn,电脑会自动判断到cn里的(还好当时开了代理,进入了com,到了写这篇文章的时候才发现)
- 樱花FRP:公网地址 frp-bar.com,远程端口 12345。
- 客户端:Windows 10,使用 OpenVPN Connect 客户端(类似 OpenVPN 3)。
配置过程
1. 群晖端配置 OpenVPN
步骤
- 启用 OpenVPN 服务:
- 打开“VPN Server” > “OpenVPN”。
- 勾选“启动 OpenVPN 服务器”。
- 配置:
- 动态 IP 地址:10.8.0.1(子网 10.8.0.0/24)。
- 最大联机数量:10。
- 单个连接线上限:6。
- 端口:1194,通信协议:UDP。
- 加密强度:AES-256-CBC,验证:SHA512。
- 未勾选“启用 VPN 压缩机制”(避免兼容性问题)。
- 勾选“允许客户端访问服务器的 LAN”(推送局域网路由)。
- 未勾选“启用 IPv6 服务端模式”。
- 点击“应用”。
- 设置证书:
- “简单”下拉菜单为空,需生成证书:
- “控制面板” > “安全性” > “证书” > “添加” > “创建自签名证书”。
- 描述:OpenVPN Cert,主题名称:192.168.123.88。
- 保存后,返回 OpenVPN 设置,选择该证书。
- 点击“应用”。
- “简单”下拉菜单为空,需生成证书:
- 导出配置文件:
- “VPN Server” > “OpenVPN” > “导出配置”。
- 解压得到 ca.crt 和 openvpn.ovpn。
遇到的问题
保存配置时提示:
text
收起自动换行复制
请检查您的 DiskStation 网络配置的端口转发以及防火墙设置,确保 UDP 端口 1194 可供外部访问。
- 原因:群晖检测到 1194 端口可能无法从外部访问(因为使用樱花FRP 穿透,未直接端口转发)。
- 解决:配置群晖防火墙,允许 UDP 1194 端口(详见后续步骤)。
2. 配置樱花FRP 实现内网穿透
步骤
- 创建隧道:
- 登录 https://www.natfrp.com/。
- 创建 UDP 隧道:
- 本地地址:192.168.123.88:1194。
- 远程端口:12345。
- 服务器:frp-bar.com,节点:新工联通PLUS1。
- 记下 Token。
- 群晖 Docker 运行 FRPC:(这步我没有,我用的是我不是矿神的套件,很简单的)
安装 Docker,创建 frpc 容器。
配置 /docker/frp/frpc.ini:
text
收起自动换行复制
[common] server_addr = frp-bar.com server_port = 7000 token = 你的token [openvpn] type = udp local_ip = 192.168.123.88 local_port = 1194 remote_port = 12345
启动容器,日志显示 start proxy success。
遇到的问题
樱花FRP 面板显示在线,但端口测试(https://www.yougetsignal.com/tools/open-ports/)提示:
text
收起自动换行复制
Port 12345 is closed on frp-bar.com.
- 原因:YouGetSignal 不支持检测 UDP 端口(仅支持 TCP)。
- 解决:通过 OpenVPN 客户端连接测试,确认端口实际可达。
3. 配置 OpenVPN 客户端
初始配置文件
初始导出的 openvpn.ovpn:
text
收起自动换行复制
dev tun tls-client remote frp-bar.com 12345 proto udp script-security 2 reneg-sec 0 cipher AES-256-CBC auth SHA512 auth-user-pass <ca> [证书内容] </ca>
遇到的问题
连接失败(ERR_INVALID_CONFIG):
错误:
text
收起自动换行复制
ERR_INVALID_CONFIG: option_error: Neither 'client' nor both 'tls-client' and 'pull' options declared. OpenVPN3 client only supports --client mode.
原因:OpenVPN Connect 客户端要求明确声明 client 模式。
解决:移除 tls-client,添加 client:
text
收起自动换行复制
client dev tun proto udp remote frp-bar.com 12345 cipher AES-256-CBC auth SHA512 auth-user-pass <ca> [证书内容] </ca>
连接失败(Unsupported option):
错误:
text
收起自动换行复制
Server only option: push Unsupported option (ignored): resolv-retry,persist-key,persist-tun
原因:OpenVPN Connect 不支持 push 和部分选项(如 resolv-retry)。
解决:移除不受支持的选项,简化配置:
text
收起自动换行复制
client dev tun proto udp remote frp-bar.com 12345 cipher AES-256-CBC auth SHA512 auth-user-pass <ca> [证书内容] </ca>
连接成功但公网 IP 未变化:
问题:连接成功后,访问 https://www.whatismyipaddress.com 仍显示本地 IP。
原因:未将默认网关重定向到 VPN。
解决:添加 redirect-gateway def1:
text
收起自动换行复制
client dev tun proto udp remote frp-bar.com 12345 cipher AES-256-CBC auth SHA512 auth-user-pass <ca> [证书内容] </ca> redirect-gateway def1
4. 解决路由问题
问题
- 群晖未推送 push “route 192.168.123.0 255.255.255.0”,客户端无法访问局域网。
- 即使勾选“允许客户端访问服务器的 LAN”,导出的配置文件中无此路由。
解决方法
客户端手动添加路由:
命令提示符(管理员模式):
text
收起自动换行复制
route add 192.168.123.0 MASK 255.255.255.0 10.8.0.1
route change 0.0.0.0 MASK 0.0.0.0 10.8.0.1
通过 redirect-gateway def1 解决:
- 添加后,公网流量通过 VPN,IP 变为群晖网络出口 IP。
结果
- 公网 IP 变化(例如变为 101.70.156.105)。
- 可访问群晖局域网:ping 192.168.123.88,浏览器访问 http://192.168.123.88:5000。
5. 防火墙和端口问题
问题
- 群晖提示端口 1194 外部不可达。
- 樱花FRP 端口 12345 测试“closed”。
解决
- 配置群晖防火墙:
- “控制面板” > “安全性” > “防火墙” > “编辑规则”。
- 添加规则:
- 来源 IP:所有。
- 协议:UDP。
- 端口:1194。
- 操作:允许。
- 端口测试误判:
- YouGetSignal 不支持 UDP 检测,显示“closed”不准确。
- 通过 OpenVPN 连接成功,确认 12345 端口实际可达。
最终结果
- OpenVPN 客户端成功连接:
- 私有 IP:10.8.0.6。
- 服务器:frp-bar.com:12345(UDP)。
- 公网 IP 变为群晖网络出口 IP。
- 可访问群晖局域网:
- ping 192.168.123.88 成功。
- 浏览器访问 http://192.168.123.88:5000 正常。
经验总结
- OpenVPN Connect 兼容性:
- OpenVPN Connect 不支持 push 等选项,需简化配置文件。
- 如果需要更多功能,可使用 OpenVPN GUI(2.x 版本)。
- UDP 端口检测:
- 在线工具(如 YouGetSignal)无法检测 UDP 端口,建议用 Nmap 或直接客户端测试。
- 路由推送问题:
- DSM 6.2.3 可能有 Bug,未正确推送路由。
- 解决方法:客户端添加 redirect-gateway def1 或手动路由。
- 防火墙配置:
- 确保群晖防火墙允许 UDP 1194 端口。
后续优化
- DNS 设置:
- 手动设置客户端 DNS 为 192.168.123.88,提高局域网访问稳定性。
- FRPC 监控:
- 启用 Docker 容器自动重启,确保 FRPC 稳定。
- 升级 DSM:
- 升级到 DSM 6.2.4 或 7.x,修复潜在 Bug。
- 安全性:
- 加强 admin 密码,限制防火墙访问范围。
结语
通过这次配置,我成功实现了群晖 OpenVPN 的公网访问,并解决了客户端连接、路由推送等问题。整个过程虽然复杂,但通过逐步排查,最终达成了目标。希望这篇博客能帮到有类似需求的读者!如果有问题,欢迎留言交流!😊